/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sandbox.org.wads.lib.xpdl.elements;

import java.util.Hashtable;
import sandbox.org.wads.lib.xpdl.WADSXPDLElement;

/**
 *
 * @author Nattasan W.
 */
public class Package extends WADSXPDLElement {
  private PackageHeader package_header;
  private RefinablePackageHeader refinable_package_header;
  private ConformanceClass conformance_class;
  private Script script;
  private ExternalPackages external_packages;
  private TypeDeclarations type_declarations;
  private Participants participants;
  private DataFields datafields;
  private PartnerLinkTypes partner_link_types;
  private Pools pools;
  private MessageFlows message_flows;
  private Associations associations;
  private Artifacts artifacts;
  private WorkflowProcesses workflow_processes;
  private ExtendedAttributes extended_attributes;
  protected Hashtable<String, String> attributes = new Hashtable<String, String>();
  
  private Hashtable<String, String> ns = new Hashtable<String, String>();
  public static final String XMLNS = "xmlns";
  public static final String XMLNS_XPDL = "xmlns:xpdl";
  public static final String XMLNS_XSI = "xmlns:xsi";
  public static final String XSI_SCHEMALOCATION = "xsi:schemaLocation";
  
  public Package() {
    super(null, Package.class.getSimpleName(), true);
    
    //Use XPDL NameSpace version 1.0
    ns.put("xmlns", "http://www.wfmc.org/2002/XPDL1.0");
    ns.put("xmlns:xpdl", "http://www.wfmc.org/2002/XPDL1.0");
    ns.put("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
    ns.put("xsi:schemaLocation", "http://www.wfmc.org/2002/XPDL1.0 http://wfmc.org/standards/docs/TC-1025_schema_10_xpdl.xsd");
  }

  public PackageHeader getPackageHeader() {
    return package_header;
  }

  public RefinablePackageHeader getRefinablePackageHeader() {
    return refinable_package_header;
  }

  public ConformanceClass getConformanceClass() {
    return conformance_class;
  }

  public Script getScript() {
    return script;
  }

  public ExternalPackages getExternalPackages() {
    return external_packages;
  }

  public TypeDeclarations getTypeDeclarations() {
    return type_declarations;
  }

  public Participants getParticipants() {
    return participants;
  }

  public DataFields getDatafields() {
    return datafields;
  }

  public PartnerLinkTypes getPartnerLinkTypes() {
    return partner_link_types;
  }

  public Pools getPools() {
    return pools;
  }

  public MessageFlows getMessageFlows() {
    return message_flows;
  }

  public Associations getAssociations() {
    return associations;
  }

  public Artifacts getArtifacts() {
    return artifacts;
  }

  public WorkflowProcesses getWorkflowProcesses() {
    return workflow_processes;
  }

  public ExtendedAttributes getExtendedAttributes() {
    return extended_attributes;
  }

  public Hashtable<String, String> getNs() {
    return ns;
  }
}
